package com.monkeyboy.mytest.adapter;

import java.io.File;
import java.util.Map;

import com.monkeyboy.mytest.entity.Order;
import com.monkeyboy.mytest.entity.Packaged;

/**
 * 作用： 委托的消费者
 * 
 * @author Gavin
 * @time:2019年1月17日
 */
public class MessageDelegate {
	// 默认的消息处理方法
	public void handleMessage(byte[] messageBody) {
		System.err.println("默认方法名handleMessage，消息内容：" + new String(messageBody));
	}

	/**
	 * note:如果rabbitTemplate发送的是byte这儿接受的就要用byte数组接收，
	 * 如果是发的Message或者object对象就要用String接受 ，否则就要用消息转换器来进行处理
	 *
	 * 
	 * @Author:Gavin
	 * @time:2019年1月17日
	 * @param messageBody
	 */
	// 自定义的消息处理方法
	public void consumeMessage(String messageBody) {
		System.err.println("自定义方法，消息内容：" + messageBody);
	}

	/**
	 * 作用： 指定对列名字的给某个方法消费
	 * 
	 * @Author:Gavin
	 * @time:2019年1月17日
	 * @param messageBody
	 */
	public void consumeMessageForSelf(String messageBody) {
		System.err.println("指定队列名字到固定的消费者：" + messageBody);
	}

	// 支持自定义的json格式
	public void consumeMessageForJson(Map messageBody) {
		System.err.println("json消息格式转化，消息内容：" + messageBody);
	}

	// 支持java对象的转换
	public void consumeMessage(Order order) {
		System.err.println("order对象, 消息内容, id: " + order.getId() + ", name: " + order.getName() + ", content: "
				+ order.getContent());
	}

	public void consumeMessage(Packaged pack) {
		System.err.println("package对象, 消息内容, id: " + pack.getId() + ", name: " + pack.getName() + ", content: "
				+ pack.getDescription());
	}

	// 支持多媒体文件格式文件的转换
	public void consumeMessage(File file) {
		System.err.println("文件对象 方法, 消息内容:" + file.getName());
	}
}
